<!--$Id: freebsd.so,v 11.18 2003/04/01 17:21:45 bostic Exp $-->
<!--Copyright (c) 1997,2008 Oracle.  All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
<title>Berkeley DB Reference Guide: FreeBSD</title>
<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
</head>
<body bgcolor=white>
<a name="2"><!--meow--></a>
<table width="100%"><tr valign=top>
<td><b><dl><dt>Berkeley DB Reference Guide:<dd>Building Berkeley DB for UNIX/POSIX systems</dl></b></td>
<td align=right><a href="../build_unix/aix.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_unix/hpux.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
<p align=center><b>FreeBSD</b></p>
<ol>
<p><li><b>I can't compile and run multithreaded applications.</b>
<p>Special compile-time flags are required when compiling threaded
applications on FreeBSD.  If you are compiling a threaded application,
you must compile with the _THREAD_SAFE and -pthread flags:</p>
<blockquote><pre>cc -D_THREAD_SAFE -pthread ...</pre></blockquote>
<p>The Berkeley DB library will automatically build with the correct options.</p>
<hr size=1 noshade>
<p><li><b>I get occasional failures when running RPC-based programs under
FreeBSD clients.</b>
<p>There is a known bug in the XDR implementation in the FreeBSD C library
from version 2.2 up to version 4.0-RELEASE, that causes certain-sized
messages to fail and return a zero-filled reply to the client.  A bug
report (#16028) has been filed with FreeBSD.  The following patch is the
FreeBSD fix:</p>
<blockquote><pre>*** /usr/src/lib/libc/xdr/xdr_rec.c.orig	Mon Jan 10 10:20:42 2000
--- /usr/src/lib/libc/xdr/xdr_rec.c	Wed Jan 19 10:53:45 2000
***************
*** 558,564 ****
  	 * but we don't have any way to be certain that they aren't
  	 * what the client actually intended to send us.
  	 */
! 	if ((header & (~LAST_FRAG)) == 0)
  		return(FALSE);
  	rstrm-&gt;fbtbc = header & (~LAST_FRAG);
  	return (TRUE);
--- 558,564 ----
  	 * but we don't have any way to be certain that they aren't
  	 * what the client actually intended to send us.
  	 */
! 	if (header == 0)
  		return(FALSE);
  	rstrm-&gt;fbtbc = header & (~LAST_FRAG);
  	return (TRUE);
</pre></blockquote>
<hr size=1 noshade>
<p><li><b>I see fsync and close system call failures when accessing
databases or log files on NFS-mounted filesystems.</b>
<p>Some FreeBSD releases are known to return ENOLCK from fsync and close
calls on NFS-mounted filesystems, even though the call has succeeded.
The Berkeley DB code should be modified to ignore ENOLCK errors, or no Berkeley DB
files should be placed on NFS-mounted filesystems on these systems.</p>
</ol>
<table width="100%"><tr><td><br></td><td align=right><a href="../build_unix/aix.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_unix/hpux.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
<p><font size=1>Copyright (c) 1996,2008 Oracle.  All rights reserved.</font>
</body>
</html>
